unit UCadEtapaDetalhe;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, UModeloFilha, DB, DBTables, StdCtrls, Buttons, Mask, DBCtrls,
  Grids, DBGrids, UDptoUteis, ExtCtrls;

type
  TFCadEtapaDetalhe = class(TFModeloFilha)
    qFilhaETPDETDATAPREVISTATERMINO: TDateTimeField;
    qFilhaETPDETDATAPREVISTAINICO: TDateTimeField;
    qFilhaETPDETDATATERMINO: TDateTimeField;
    qFilhaETPDETDATAINICIO: TDateTimeField;
    qFilhaETPDETID: TIntegerField;
    qFilhaETPDETDESCRICAO: TStringField;
    qFilhaETPID: TIntegerField;
    qFilhaEMPREENDID: TIntegerField;
    lbl1: TLabel;
    dbedt1: TDBEdit;
    ds1: TDataSource;
    lbl2: TLabel;
    dbedt2: TDBEdit;
    lbl3: TLabel;
    dbedt3: TDBEdit;
    lbl4: TLabel;
    dbedt4: TDBEdit;
    lbl7: TLabel;
    dbedt7: TDBEdit;
    lbl8: TLabel;
    dbedt8: TDBEdit;
    lbl9: TLabel;
    dbedt9: TDBEdit;
    lbl10: TLabel;
    dbedt10: TDBEdit;
    dbgrdEtapaDetalheItem: TDBGrid;
    dbgrdEtapaDetalheServico: TDBGrid;
    dsEtapaDetalheItem: TDataSource;
    dsEtapaDetalheServico: TDataSource;
    QEtapaDetalheMaterial: TQuery;
    QEtapaDetalheServico: TQuery;
    QEtapaDetalheServicoETPDETSERDESCRICAO: TStringField;
    QEtapaDetalheServicoETPDETID: TIntegerField;
    QEtapaDetalheServicoEMPREENDID: TIntegerField;
    QEtapaDetalheServicoETPID: TIntegerField;
    QEtapaDetalheServicoETPDETSERID: TIntegerField;
    Panel1: TPanel;
    Panel2: TPanel;
    Edit1: TEdit;
    Edit2: TEdit;
    intgrfldQEtapaDetalheMaterialIDMATERIAL: TIntegerField;
    intgrfldQEtapaDetalheMaterialETPDETID: TIntegerField;
    intgrfldQEtapaDetalheMaterialETPID: TIntegerField;
    intgrfldQEtapaDetalheMaterialEMPREENDID: TIntegerField;
    strngfldQEtapaDetalheMaterialMATDESCRICAO: TStringField;
    procedure dbgrdEtapaDetalheServicoKeyDown(Sender: TObject;
      var Key: Word; Shift: TShiftState);
    procedure qFilhaAfterScroll(DataSet: TDataSet);
    procedure dbgrdEtapaDetalheServicoDblClick(Sender: TObject);
    procedure BtExcluirClick(Sender: TObject);
    procedure dbgrdEtapaDetalheItemKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure dbgrdEtapaDetalheItemDblClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FCadEtapaDetalhe: TFCadEtapaDetalhe;

implementation

uses UCadEtapaInfra, UCadEtapaDetalheMaterial;

{$R *.dfm}

procedure TFCadEtapaDetalhe.dbgrdEtapaDetalheServicoKeyDown(
  Sender: TObject; var Key: Word; Shift: TShiftState);
    var x,i:integer;
      FormularioFilho :TFCadEtapaDetalheServico;
begin
  inherited;
  if Ord(Key) = 45 then
  Begin

        FCadEtapaDetalheServico := TFCadEtapaDetalheServico.create(nil);
        //
        FormularioFilho := FCadEtapaDetalheServico;

        FormularioFilho.qFilha.close;
        FormularioFilho.qFilha.open;
        FormularioFilho.qFilha.append;
        //
        for i:= 0 to qFilha.FieldCount -1 do
        begin
          for x:= 0 to FormularioFilho.qFilha.FieldCount-1 do
          begin
            if qFilha.Fields[i].FieldName = FormularioFilho.qFilha.Fields[x].FieldName then
             FormularioFilho.qFilha.FieldByName(FormularioFilho.qFilha.Fields[x].FieldName).AsVariant := qFilha.fieldByname(qFilha.Fields[i].FieldName).AsVariant;

          end;
        end;
        FormularioFilho.qFilha.FieldByName('ETPDETSERID').AsInteger := DPTOUltimo('ETAPADETALHESERVICO', 'ETPDETSERID', 'WHERE ETPID = ' + quotedStr(FormularioFilho.qFilha.FieldByName('ETPID').ASSTRING) + ' and EMPREENDID = '  + quotedStr(FormularioFilho.qFilha.FieldByName('EMPREENDID').ASSTRING) + ' and ETPDETID = '  + quotedStr(FormularioFilho.qFilha.FieldByName('ETPDETID').ASSTRING)  );

        FormularioFilho.Showmodal;
        //
        QEtapaDetalheServico.Close;
        QEtapaDetalheServico.Open;

  end;

end;

procedure TFCadEtapaDetalhe.qFilhaAfterScroll(DataSet: TDataSet);
var vSql:String;
begin
  inherited;
  IF QFILHA.RecordCount > 0 THEN
  BEGIN
    QEtapaDetalheServico.Close;
    QEtapaDetalheServico.SQL.Clear;

    vSql := 'SELECT * FROM ETAPADETALHESERVICO '
            + ' WHERE ETPID = ' + quotedStr(qFilha.FieldByName('ETPID').ASSTRING)
            + ' and EMPREENDID = '  + quotedStr(qFilha.FieldByName('EMPREENDID').ASSTRING)
            + ' and ETPDETID = '  + quotedStr(qFilha.FieldByName('ETPDETID').ASSTRING);

    QEtapaDetalheServico.SQL.Add(vSql);
    QEtapaDetalheServico.Open;


    QEtapaDetalheMaterial.Close;
    QEtapaDetalheMaterial.SQL.Clear;

    vSql := 'SELECT EM.*, M.MATDESCRICAO FROM ETAPADETALHEMATERIAL EM, MATERIAIS M '
            + ' WHERE EM.ETPID = ' + quotedStr(qFilha.FieldByName('ETPID').ASSTRING)
            + ' and EM.EMPREENDID = '  + quotedStr(qFilha.FieldByName('EMPREENDID').ASSTRING)
            + ' and EM.ETPDETID = '  + quotedStr(qFilha.FieldByName('ETPDETID').ASSTRING)
            + ' AND EM.IDMATERIAL = M.IDMATERIAL'
            ;

    QEtapaDetalheMaterial.SQL.Add(vSql);
    QEtapaDetalheMaterial.Open;



  END;
end;

procedure TFCadEtapaDetalhe.dbgrdEtapaDetalheServicoDblClick(
  Sender: TObject);
begin
  inherited;
      FCadEtapaDetalheServico := tFCadEtapaDetalheServico.create(nil);
      //
      FCadEtapaDetalheServico.qFilha.close;
      FCadEtapaDetalheServico.qFilha.sql.Clear;


    vSql := 'SELECT * FROM ETAPADETALHESERVICO'
          + ' WHERE ETPID = ' + quotedStr(QEtapaDetalheServico.FieldByName('ETPID').ASSTRING)
          + ' and EMPREENDID = '  + quotedStr(QEtapaDetalheServico.FieldByName('EMPREENDID').ASSTRING)
          + ' and ETPDETID = '  + quotedStr(QEtapaDetalheServico.FieldByName('ETPDETID').ASSTRING)
          + ' and ETPDETSERID = '  + quotedStr(QEtapaDetalheServico.FieldByName('ETPDETSERID').ASSTRING);


      FCadEtapaDetalheServico.qFilha.sql.Add(vSql);
      FCadEtapaDetalheServico.qFilha.open;
      FCadEtapaDetalheServico.qFilha.Edit;
      //
      FCadEtapaDetalheServico.Showmodal;
      QEtapaDetalheServico.Close;
      QEtapaDetalheServico.Open;
end;

procedure TFCadEtapaDetalhe.BtExcluirClick(Sender: TObject);
begin
  if (QEtapaDetalheServico.RecordCount > 0) then
  Begin
    MessageDlg('Essa etapa possui varios registros associados a ela. Apague os dados associados primeiro', mtError, [mbok], 0);
    exit;
  end;
  inherited;

end;

procedure TFCadEtapaDetalhe.dbgrdEtapaDetalheItemKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
  var x,i:integer;
      FormularioFilho :tFCadEtapaDetalheMaterial;
begin
  inherited;
  if Ord(Key) = 45 then
  Begin
      FCadEtapaDetalheMaterial := TFCadEtapaDetalheMaterial.create(nil);
      //
      FormularioFilho := FCadEtapaDetalheMaterial;

      FormularioFilho.qFilha.close;
      FormularioFilho.qFilha.open;
      FormularioFilho.qFilha.append;
      //
      for i:= 0 to qFilha.FieldCount -1 do
      begin
        for x:= 0 to FormularioFilho.qFilha.FieldCount-1 do
        begin
          if qFilha.Fields[i].FieldName = FormularioFilho.qFilha.Fields[x].FieldName then
           FormularioFilho.qFilha.FieldByName(FormularioFilho.qFilha.Fields[x].FieldName).AsVariant := qFilha.fieldByname(qFilha.Fields[i].FieldName).AsVariant;

        end;
      end;
      FormularioFilho.Showmodal;
      //
      QEtapaDetalheMaterial.Close;
      QEtapaDetalheMaterial.Open;

  end;

end;

procedure TFCadEtapaDetalhe.dbgrdEtapaDetalheItemDblClick(Sender: TObject);
begin
  inherited;
  FCadEtapaDetalheMaterial := tFCadEtapaDetalheMaterial.create(nil);
      //
      FCadEtapaDetalheMaterial.qFilha.close;
      FCadEtapaDetalheMaterial.qFilha.sql.Clear;


    vSql := 'SELECT * FROM ETAPADETALHEMATERIAL '
            + ' WHERE ETPID = ' + quotedStr(QEtapaDetalheMaterial.FieldByName('ETPID').ASSTRING)
            + ' and EMPREENDID = '  + quotedStr(QEtapaDetalheMaterial.FieldByName('EMPREENDID').ASSTRING)
            + ' and ETPDETID = '  + quotedStr(QEtapaDetalheMaterial.FieldByName('ETPDETID').ASSTRING)
            + ' and IDMATERIAL = '  + quotedStr(QEtapaDetalheMaterial.FieldByName('IDMATERIAL').ASSTRING)
             ;

      FCadEtapaDetalheMaterial.qFilha.sql.Add(vSql);
      FCadEtapaDetalheMaterial.qFilha.open;
      FCadEtapaDetalheMaterial.qFilha.Edit;
      //
      FCadEtapaDetalheMaterial.Showmodal;
      QEtapaDetalheMaterial.Close;
      QEtapaDetalheMaterial.Open;
end;

procedure TFCadEtapaDetalhe.FormCreate(Sender: TObject);
begin
  inherited;
  FINAL := FALSE;
end;

end.
